package com.geek.novel.activity.main.operate

import android.content.Context
import android.content.Intent
import android.text.TextUtils
import android.view.View
import android.widget.TextView
import com.geek.novel.R
import com.geek.novel.activity.base.BaseActivity
import com.geek.novel.activity.auth.LoginActivity
import com.geek.novel.activity.auth.UserInfoActivity
import com.geek.novel.common.Constant
import com.geek.novel.listener.ApiResultListener
import com.geek.novel.services.ImageService
import com.geek.novel.services.manager.AuthManager
import com.geek.novel.ui.MyRoundHead
import com.geek.novel.utils.SecurityUtil
import com.geek.novel.vo.ApiResult


/**
 * 登录授权相关操作
 */
class LoginOperator(val context: Context): View.OnClickListener, ApiResultListener {

    private val mContext = context as BaseActivity

    lateinit var rivUserPic: MyRoundHead
    lateinit var tvUsername: TextView

    //用户信息管理器
    private lateinit var authManager: AuthManager

    //图片的服务类
    private lateinit var imageService: ImageService

    fun init(){
        //图片服务
        imageService = ImageService(mContext)

        rivUserPic = mContext.findViewById(R.id.riv_user_pic)
        tvUsername = mContext.findViewById(R.id.tv_username)
        //用户头像点击事件
        rivUserPic.setOnClickListener(this)
        //设置头像、设置用户名等等
        this.loadUserInfo()

        //初始化用户信息的管理器
        authManager = AuthManager()
        authManager.setOnApiResultListener(this)

        //加载用户信息
        authManager.getUserInfo()
    }

    /**
     * 点击事件
     */
    override fun onClick(v: View) {
        when(v.id){
            //用户头像点击事件
            R.id.riv_user_pic->{
                val user = SecurityUtil.getPrincipal()
                //不存在用户，前往登录，存在则前往用户信息修改页面
                if(user == null){
                    mContext.startActivityForResultByAnim(mContext, LoginActivity::class.java, Constant.ACTIVITY_RESULT_USER_LOGIN)
                }else{
                    //前往用户信息修改页面
                    mContext.startActivityForResultByAnim(mContext, UserInfoActivity::class.java, Constant.ACTIVITY_RESULT_USERINFO)
                }
            }
        }
    }

    /**数据回显的操作*/
    fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        //加载用户信息、头像等等（这里不能简单的判断requestCode，像设置页面、收藏页面的回显都会做登录，所以干脆直接获取用户信息好了）
        this.loadUserInfo()
    }


    /**加载用户信息、头像等等*/
    private fun loadUserInfo(){
        tvUsername.text = mContext.resources.getString(R.string.user_unLogin)
        //获取用户信息
        val user = SecurityUtil.getPrincipal()
        //加载用户信息、头像等等
        if(user != null){
            tvUsername.text = if(!TextUtils.isEmpty(user.name)){
                user.name
            }else{
                mContext.resources.getString(R.string.user_username_none)
            }
        }
        //显示用户头像
        imageService.parseUserImage(rivUserPic)
    }

    override fun handleResult(result: ApiResult, code: Int) {
        when(code){
            Constant.HTTP_KEY_GET_USERINFO->{
                this.loadUserInfo()
            }
        }
    }

}